require 'rubygems'
require 'json'

require File.dirname(__FILE__) + "/../common/ItemType"

# 検索レスポンス用データクラス： 支出項目の一覧
class OutgoingResult
  # コンストラクタ
  # @param {Outgoing[]} outgoings データベースから取得した支出一覧（必要部分のみ）
  def initialize(outgoings)
    # {OutgoingResultItem[]} 支出一覧の実体
    @items = []

    outgoings.each do |outgoing|
      item = OutgoingResultItem.new()
      item.budgetId = outgoing.budgetId
      item.budgetName = "" # TODO 別途、予算一覧から取得しておく必要がある。
      item.outgoingId = outgoing.id
      item.outgoingName = outgoing.name
      item.outgoing = outgoing.value
      item.dateTime = Time.mktime(outgoing.year, outgoing.month, outgoing.day).to_i * 1000
      @items.push(item)
    end
  end
  
  # 検索結果を表すJSONオブジェクトを生成する
  def toJson()
    response = {}
    response["result"] = {}
    response["result"]["type"] = ItemType::OUTGOING
    response["result"]["rows"] = @items
    return JSON.dump(response)
  end
  
  # HTTPレスポンスに、検索結果を設定する
  def appendResultTo(response)
    json = toJson()
    response.body = json
  end
end

# 収支複合結果の各項目
class OutgoingResultItem
  # {int} 予算項目識別子
  def budgetId
    @budgetId
  end
  
  # {String} 予算項目名
  def budgetName
    @budgetName
  end
  
  # {int} 支出項目識別子
  def outgoingId
    @outgoingId
  end
  
  # {String} 支出項目名
  def outgoingName
    @outgoingName
  end
  
  # {int} 支出総額
  def outgoing
    @outgoing
  end
  
  # {int} 支出日。1970/1/1からのミリ秒数
  def dateTime
    @dateTime
  end
end
